<!-- HTML header for doxygen 1.8.20-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
	<meta http-equiv="X-UA-Compatible" content="IE=9"/>
	<meta name="generator" content="Doxygen 1.9.4"/>
	<meta name="viewport" content="width=device-width, initial-scale=1"/>
	<title>Raspberry Pi Pico SDK: pico_cyw43_arch</title>
	<!-- <link href="tabs.css" rel="stylesheet" type="text/css"/> -->
	<script type="text/javascript" src="jquery.js"></script>
	<script type="text/javascript" src="dynsections.js"></script>
	<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
	<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
	<link href="doxygen.css" rel="stylesheet" type="text/css" />
	<link href="normalise.css" rel="stylesheet" type="text/css"/>
<link href="main.css" rel="stylesheet" type="text/css"/>
<link href="styles.css" rel="stylesheet" type="text/css"/>
</head>
<body>
	<div class="navigation-mobile">
		<div class="logo--mobile">
			<a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
		</div>
		<div class="navigation-toggle">
			<span class="line-1"></span>
			<span class="line-2">
				<p>Menu Toggle</p>
			</span>
			<span class="line-3"></span>
		</div>
	</div>
	<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
		<div class="logo">
			<a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
			<span style="display: inline-block; margin-top: 10px;">
				v2.0.0
			</span>
		</div>
		<div class="navigation-footer">
			<img src="logo-mobile.svg" alt="Raspberry Pi">
			<a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi Ltd</a>
		</div>
<!-- 		<div class="search">
			<form>
				<input type="search" name="search" id="search" placeholder="Search">
				<input type="submit" value="Search">
			</form>
		</div> -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__pico__cyw43__arch.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#groups">Modules</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle"><div class="title">pico_cyw43_arch<div class="ingroups"><a class="el" href="group__networking.html">Networking Libraries</a></div></div></div>
</div><!--header-->
<div class="contents">

<p>Architecture for integrating the CYW43 driver (for the wireless on Pico W) and lwIP (for TCP/IP stack) into the SDK. It is also necessary for accessing the on-board LED on Pico W.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__cyw43__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cyw43__driver.html">cyw43_driver</a></td></tr>
<tr class="memdesc:group__cyw43__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Driver used for Pico W wireless. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga2058ce9bf936fd1402f36e22335a6914"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga2058ce9bf936fd1402f36e22335a6914">cyw43_arch_lwip_check</a>()&#160;&#160;&#160;cyw43_thread_lock_check()</td></tr>
<tr class="memdesc:ga2058ce9bf936fd1402f36e22335a6914"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks the caller has any locks required for calling into lwIP.  <a href="group__pico__cyw43__arch.html#ga2058ce9bf936fd1402f36e22335a6914">More...</a><br /></td></tr>
<tr class="separator:ga2058ce9bf936fd1402f36e22335a6914"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga7a05bd21f02a0effadbba1e8266b8771"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga7a05bd21f02a0effadbba1e8266b8771">cyw43_arch_init</a> (void)</td></tr>
<tr class="memdesc:ga7a05bd21f02a0effadbba1e8266b8771"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the CYW43 architecture.  <a href="group__pico__cyw43__arch.html#ga7a05bd21f02a0effadbba1e8266b8771">More...</a><br /></td></tr>
<tr class="separator:ga7a05bd21f02a0effadbba1e8266b8771"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf3eb9816b2413128442e4adbfc5114c5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gaf3eb9816b2413128442e4adbfc5114c5">cyw43_arch_init_with_country</a> (uint32_t country)</td></tr>
<tr class="memdesc:gaf3eb9816b2413128442e4adbfc5114c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the CYW43 architecture for use in a specific country.  <a href="group__pico__cyw43__arch.html#gaf3eb9816b2413128442e4adbfc5114c5">More...</a><br /></td></tr>
<tr class="separator:gaf3eb9816b2413128442e4adbfc5114c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8557dfd76b719f39cf182a144dd070b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gae8557dfd76b719f39cf182a144dd070b">cyw43_arch_deinit</a> (void)</td></tr>
<tr class="memdesc:gae8557dfd76b719f39cf182a144dd070b"><td class="mdescLeft">&#160;</td><td class="mdescRight">De-initialize the CYW43 architecture.  <a href="group__pico__cyw43__arch.html#gae8557dfd76b719f39cf182a144dd070b">More...</a><br /></td></tr>
<tr class="separator:gae8557dfd76b719f39cf182a144dd070b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga092b97e879be5b9aa9121abda23e1337"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structasync__context.html">async_context_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga092b97e879be5b9aa9121abda23e1337">cyw43_arch_async_context</a> (void)</td></tr>
<tr class="memdesc:ga092b97e879be5b9aa9121abda23e1337"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> currently in use by the cyw43_arch code.  <a href="group__pico__cyw43__arch.html#ga092b97e879be5b9aa9121abda23e1337">More...</a><br /></td></tr>
<tr class="separator:ga092b97e879be5b9aa9121abda23e1337"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga546a36df25d7609b83bf6c4972440181"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga546a36df25d7609b83bf6c4972440181">cyw43_arch_set_async_context</a> (<a class="el" href="structasync__context.html">async_context_t</a> *context)</td></tr>
<tr class="memdesc:ga546a36df25d7609b83bf6c4972440181"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> to be used by the cyw43_arch_init.  <a href="group__pico__cyw43__arch.html#ga546a36df25d7609b83bf6c4972440181">More...</a><br /></td></tr>
<tr class="separator:ga546a36df25d7609b83bf6c4972440181"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90add164a540ed61daa8aa8df13f36a3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structasync__context.html">async_context_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga90add164a540ed61daa8aa8df13f36a3">cyw43_arch_init_default_async_context</a> (void)</td></tr>
<tr class="memdesc:ga90add164a540ed61daa8aa8df13f36a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the default <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> for the current cyw43_arch type.  <a href="group__pico__cyw43__arch.html#ga90add164a540ed61daa8aa8df13f36a3">More...</a><br /></td></tr>
<tr class="separator:ga90add164a540ed61daa8aa8df13f36a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacb76fc7935c64b2a0cb32c0b8af94782"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gacb76fc7935c64b2a0cb32c0b8af94782">cyw43_arch_poll</a> (void)</td></tr>
<tr class="memdesc:gacb76fc7935c64b2a0cb32c0b8af94782"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform any processing required by the <code>cyw43_driver</code> or the TCP/IP stack.  <a href="group__pico__cyw43__arch.html#gacb76fc7935c64b2a0cb32c0b8af94782">More...</a><br /></td></tr>
<tr class="separator:gacb76fc7935c64b2a0cb32c0b8af94782"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad8d40de29bb275e3b55f4f37ee4d3dc8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gad8d40de29bb275e3b55f4f37ee4d3dc8">cyw43_arch_wait_for_work_until</a> (<a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> until)</td></tr>
<tr class="memdesc:gad8d40de29bb275e3b55f4f37ee4d3dc8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sleep until there is cyw43_driver work to be done.  <a href="group__pico__cyw43__arch.html#gad8d40de29bb275e3b55f4f37ee4d3dc8">More...</a><br /></td></tr>
<tr class="separator:gad8d40de29bb275e3b55f4f37ee4d3dc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5fc198cd8f76428160dfc66f58be29c4"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga5fc198cd8f76428160dfc66f58be29c4">cyw43_arch_get_country_code</a> (void)</td></tr>
<tr class="memdesc:ga5fc198cd8f76428160dfc66f58be29c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the country code used to initialize cyw43_arch.  <a href="group__pico__cyw43__arch.html#ga5fc198cd8f76428160dfc66f58be29c4">More...</a><br /></td></tr>
<tr class="separator:ga5fc198cd8f76428160dfc66f58be29c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6796a9ab5ae2cc6c51c14ecdfcda0b96"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga6796a9ab5ae2cc6c51c14ecdfcda0b96">cyw43_arch_enable_sta_mode</a> (void)</td></tr>
<tr class="memdesc:ga6796a9ab5ae2cc6c51c14ecdfcda0b96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables Wi-Fi STA (Station) mode.  <a href="group__pico__cyw43__arch.html#ga6796a9ab5ae2cc6c51c14ecdfcda0b96">More...</a><br /></td></tr>
<tr class="separator:ga6796a9ab5ae2cc6c51c14ecdfcda0b96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab8b4763c68c539c8a8d31400a83fd095"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gab8b4763c68c539c8a8d31400a83fd095">cyw43_arch_disable_sta_mode</a> (void)</td></tr>
<tr class="memdesc:gab8b4763c68c539c8a8d31400a83fd095"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables Wi-Fi STA (Station) mode.  <a href="group__pico__cyw43__arch.html#gab8b4763c68c539c8a8d31400a83fd095">More...</a><br /></td></tr>
<tr class="separator:gab8b4763c68c539c8a8d31400a83fd095"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c3d403f299743360ecab36108e4ca7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga1c3d403f299743360ecab36108e4ca7b">cyw43_arch_enable_ap_mode</a> (const char *ssid, const char *password, uint32_t auth)</td></tr>
<tr class="memdesc:ga1c3d403f299743360ecab36108e4ca7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables Wi-Fi AP (Access point) mode.  <a href="group__pico__cyw43__arch.html#ga1c3d403f299743360ecab36108e4ca7b">More...</a><br /></td></tr>
<tr class="separator:ga1c3d403f299743360ecab36108e4ca7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga88bc0f9768bc9b877adb90b676514dac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga88bc0f9768bc9b877adb90b676514dac">cyw43_arch_disable_ap_mode</a> (void)</td></tr>
<tr class="memdesc:ga88bc0f9768bc9b877adb90b676514dac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables Wi-Fi AP (Access point) mode.  <a href="group__pico__cyw43__arch.html#ga88bc0f9768bc9b877adb90b676514dac">More...</a><br /></td></tr>
<tr class="separator:ga88bc0f9768bc9b877adb90b676514dac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8be8a816a6f40ba30cf69dd112db9d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gaa8be8a816a6f40ba30cf69dd112db9d4">cyw43_arch_wifi_connect_blocking</a> (const char *ssid, const char *pw, uint32_t auth)</td></tr>
<tr class="memdesc:gaa8be8a816a6f40ba30cf69dd112db9d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempt to connect to a wireless access point, blocking until the network is joined or a failure is detected.  <a href="group__pico__cyw43__arch.html#gaa8be8a816a6f40ba30cf69dd112db9d4">More...</a><br /></td></tr>
<tr class="separator:gaa8be8a816a6f40ba30cf69dd112db9d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2766c44297fb1fb7fe12dc67f044bdb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gab2766c44297fb1fb7fe12dc67f044bdb">cyw43_arch_wifi_connect_bssid_blocking</a> (const char *ssid, const uint8_t *bssid, const char *pw, uint32_t auth)</td></tr>
<tr class="memdesc:gab2766c44297fb1fb7fe12dc67f044bdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempt to connect to a wireless access point specified by SSID and BSSID, blocking until the network is joined or a failure is detected.  <a href="group__pico__cyw43__arch.html#gab2766c44297fb1fb7fe12dc67f044bdb">More...</a><br /></td></tr>
<tr class="separator:gab2766c44297fb1fb7fe12dc67f044bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae1237b71f7793ba603a4b39da37c7a71"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gae1237b71f7793ba603a4b39da37c7a71">cyw43_arch_wifi_connect_timeout_ms</a> (const char *ssid, const char *pw, uint32_t auth, uint32_t timeout)</td></tr>
<tr class="memdesc:gae1237b71f7793ba603a4b39da37c7a71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempt to connect to a wireless access point, blocking until the network is joined, a failure is detected or a timeout occurs.  <a href="group__pico__cyw43__arch.html#gae1237b71f7793ba603a4b39da37c7a71">More...</a><br /></td></tr>
<tr class="separator:gae1237b71f7793ba603a4b39da37c7a71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac1aa260ffa68c0ee5dcdbbbf9af80286"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gac1aa260ffa68c0ee5dcdbbbf9af80286">cyw43_arch_wifi_connect_bssid_timeout_ms</a> (const char *ssid, const uint8_t *bssid, const char *pw, uint32_t auth, uint32_t timeout)</td></tr>
<tr class="memdesc:gac1aa260ffa68c0ee5dcdbbbf9af80286"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempt to connect to a wireless access point specified by SSID and BSSID, blocking until the network is joined, a failure is detected or a timeout occurs.  <a href="group__pico__cyw43__arch.html#gac1aa260ffa68c0ee5dcdbbbf9af80286">More...</a><br /></td></tr>
<tr class="separator:gac1aa260ffa68c0ee5dcdbbbf9af80286"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga614a37dcffe6363fd6649684cac1c14e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga614a37dcffe6363fd6649684cac1c14e">cyw43_arch_wifi_connect_async</a> (const char *ssid, const char *pw, uint32_t auth)</td></tr>
<tr class="memdesc:ga614a37dcffe6363fd6649684cac1c14e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start attempting to connect to a wireless access point.  <a href="group__pico__cyw43__arch.html#ga614a37dcffe6363fd6649684cac1c14e">More...</a><br /></td></tr>
<tr class="separator:ga614a37dcffe6363fd6649684cac1c14e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga471fd4a7626a27ae7e358a664a48c510"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga471fd4a7626a27ae7e358a664a48c510">cyw43_arch_wifi_connect_bssid_async</a> (const char *ssid, const uint8_t *bssid, const char *pw, uint32_t auth)</td></tr>
<tr class="memdesc:ga471fd4a7626a27ae7e358a664a48c510"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start attempting to connect to a wireless access point specified by SSID and BSSID.  <a href="group__pico__cyw43__arch.html#ga471fd4a7626a27ae7e358a664a48c510">More...</a><br /></td></tr>
<tr class="separator:ga471fd4a7626a27ae7e358a664a48c510"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga33cca1c95fc0d7512e7fef4a59fd7475"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga33cca1c95fc0d7512e7fef4a59fd7475">cyw43_arch_gpio_put</a> (uint wl_gpio, bool value)</td></tr>
<tr class="memdesc:ga33cca1c95fc0d7512e7fef4a59fd7475"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a GPIO pin on the wireless chip to a given value.  <a href="group__pico__cyw43__arch.html#ga33cca1c95fc0d7512e7fef4a59fd7475">More...</a><br /></td></tr>
<tr class="separator:ga33cca1c95fc0d7512e7fef4a59fd7475"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac494fc808052b0e7411f945f50ebe6d5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gac494fc808052b0e7411f945f50ebe6d5">cyw43_arch_gpio_get</a> (uint wl_gpio)</td></tr>
<tr class="memdesc:gac494fc808052b0e7411f945f50ebe6d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read the value of a GPIO pin on the wireless chip.  <a href="group__pico__cyw43__arch.html#gac494fc808052b0e7411f945f50ebe6d5">More...</a><br /></td></tr>
<tr class="separator:gac494fc808052b0e7411f945f50ebe6d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a1c4a2015fb4c2d47d6d05fc72d4cbe"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">cyw43_arch_lwip_begin</a> (void)</td></tr>
<tr class="memdesc:ga6a1c4a2015fb4c2d47d6d05fc72d4cbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Acquire any locks required to call into lwIP.  <a href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">More...</a><br /></td></tr>
<tr class="separator:ga6a1c4a2015fb4c2d47d6d05fc72d4cbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae0c3d7dd9f5b41e3cf4c2ae970356df4"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4">cyw43_arch_lwip_end</a> (void)</td></tr>
<tr class="memdesc:gae0c3d7dd9f5b41e3cf4c2ae970356df4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release any locks required for calling into lwIP.  <a href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4">More...</a><br /></td></tr>
<tr class="separator:gae0c3d7dd9f5b41e3cf4c2ae970356df4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga263d31bcb5c8d387b37b4f9a578e1c27"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pico__cyw43__arch.html#ga263d31bcb5c8d387b37b4f9a578e1c27">cyw43_arch_lwip_protect</a> (int(*func)(void *param), void *param)</td></tr>
<tr class="memdesc:ga263d31bcb5c8d387b37b4f9a578e1c27"><td class="mdescLeft">&#160;</td><td class="mdescRight">sad Release any locks required for calling into lwIP  <a href="group__pico__cyw43__arch.html#ga263d31bcb5c8d387b37b4f9a578e1c27">More...</a><br /></td></tr>
<tr class="separator:ga263d31bcb5c8d387b37b4f9a578e1c27"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p >Architecture for integrating the CYW43 driver (for the wireless on Pico W) and lwIP (for TCP/IP stack) into the SDK. It is also necessary for accessing the on-board LED on Pico W. </p>
<p >Both the low level <code>cyw43_driver</code> and the lwIP stack require periodic servicing, and have limitations on whether they can be called from multiple cores/threads.</p>
<p ><code>pico_cyw43_arch</code> attempts to abstract these complications into several behavioral groups:</p>
<ul>
<li><em>'poll'</em> - This not multi-core/IRQ safe, and requires the user to call <a class="el" href="group__pico__cyw43__arch.html#gacb76fc7935c64b2a0cb32c0b8af94782">cyw43_arch_poll</a> periodically from their main loop</li>
<li><em>'thread_safe_background'</em> - This is multi-core/thread/task safe, and maintenance of the driver and TCP/IP stack is handled automatically in the background</li>
<li><em>'freertos'</em> - This is multi-core/thread/task safe, and uses a separate FreeRTOS task to handle lwIP and and driver work.</li>
</ul>
<p >As of right now, lwIP is the only supported TCP/IP stack, however the use of <code>pico_cyw43_arch</code> is intended to be independent of the particular TCP/IP stack used (and possibly Bluetooth stack used) in the future. For this reason, the integration of lwIP is handled in the base (<code>pico_cyw43_arch</code>) library based on the #define CYW43_LWIP used by the <code>cyw43_driver</code>.</p>
<dl class="section note"><dt>Note</dt><dd>As of version 1.5.0 of the Raspberry Pi Pico SDK, the <code>pico_cyw43_arch</code> library no longer directly implements the distinct behavioral abstractions. This is now handled by the more general <a class="el" href="group__pico__async__context.html">pico_async_context</a> library. The user facing behavior of pico_cyw43_arch has not changed as a result of this implementation detail, however pico_cyw43_arch is now just a thin wrapper which creates an appropriate <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> and makes a simple call to add lwIP or cyw43_driver support as appropriate. You are free to perform this context creation and adding of lwIP, cyw43_driver or indeed any other additional future protocol/driver support to your <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a>, however for now pico_cyw43_arch does still provide a few cyw43_ specific (i.e. Pico W) APIs for connection management, locking and GPIO interaction.</dd>
<dd>
The connection management APIs at least may be moved to a more generic library in a future release. The locking methods are now backed by their <a class="el" href="group__pico__async__context.html">pico_async_context</a> equivalents, and those methods may be used interchangeably (see <a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">cyw43_arch_lwip_begin</a>, <a class="el" href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4">cyw43_arch_lwip_end</a> and <a class="el" href="group__pico__cyw43__arch.html#ga2058ce9bf936fd1402f36e22335a6914">cyw43_arch_lwip_check</a> for more details).</dd>
<dd>
For examples of creating of your own <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> and addition of <code>cyw43_driver</code> and <code>lwIP</code> support, please refer to the specific source files <code>cyw43_arch_poll.c</code>, <code>cyw43_arch_threadsafe_background.c</code> and <code>cyw43_arch_freertos.c</code>.</dd></dl>
<p>Whilst you can use the <code>pico_cyw43_arch</code> library directly and specify CYW43_LWIP (and other defines) yourself, several other libraries are made available to the build which aggregate the defines and other dependencies for you:</p>
<ul>
<li><p class="startli"><b>pico_cyw43_arch_lwip_poll</b> - For using the RAW lwIP API (in <code>NO_SYS=1</code> mode) without any background processing or multi-core/thread safety.</p>
<p class="startli">The user must call <a class="el" href="group__pico__cyw43__arch.html#gacb76fc7935c64b2a0cb32c0b8af94782">cyw43_arch_poll</a> periodically from their main loop.</p>
<p class="startli">This wrapper library:</p><ul>
<li>Sets <code>CYW43_LWIP=1</code> to enable lwIP support in <code>pico_cyw43_arch</code> and <code>cyw43_driver</code>.</li>
<li>Sets <code>PICO_CYW43_ARCH_POLL=1</code> to select the polling behavior.</li>
<li>Adds the <code>pico_lwip</code> as a dependency to pull in lwIP.</li>
</ul>
</li>
<li><p class="startli"><b>pico_cyw43_arch_lwip_threadsafe_background</b> - For using the RAW lwIP API (in <code>NO_SYS=1</code> mode) with multi-core/thread safety, and automatic servicing of the <code>cyw43_driver</code> and lwIP in background.</p>
<p class="startli">Calls into the <code>cyw43_driver</code> high level API (<a class="el" href="cyw43_8h.html" title="CYW43 driver interface.">cyw43.h</a>) may be made from either core or from lwIP callbacks, however calls into lwIP (which is not thread-safe) other than those made from lwIP callbacks, must be bracketed with <a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">cyw43_arch_lwip_begin</a> and <a class="el" href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4">cyw43_arch_lwip_end</a>. It is fine to bracket calls made from within lwIP callbacks too; you just don't have to.</p>
<dl class="section note"><dt>Note</dt><dd>lwIP callbacks happen in a (low priority) IRQ context (similar to an alarm callback), so care should be taken when interacting with other code.</dd></dl>
<p>This wrapper library:</p><ul>
<li>Sets <code>CYW43_LWIP=1</code> to enable lwIP support in <code>pico_cyw43_arch</code> and <code>cyw43_driver</code> </li>
<li>Sets <code>PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1</code> to select the thread-safe/non-polling behavior.</li>
<li>Adds the pico_lwip as a dependency to pull in lwIP.</li>
</ul>
<p class="startli">This library <em>can</em> also be used under the RP2040 port of FreeRTOS with lwIP in <code>NO_SYS=1</code> mode (allowing you to call <code>cyw43_driver</code> APIs from any task, and to call lwIP from lwIP callbacks, or from any task if you bracket the calls with <a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">cyw43_arch_lwip_begin</a> and <a class="el" href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4">cyw43_arch_lwip_end</a>. Again, you should be careful about what you do in lwIP callbacks, as you cannot call most FreeRTOS APIs from within an IRQ context. Unless you have good reason, you should probably use the full FreeRTOS integration (with <code>NO_SYS=0</code>) provided by <code>pico_cyw43_arch_lwip_sys_freertos</code>.</p>
</li>
<li><p class="startli"><b>pico_cyw43_arch_lwip_sys_freertos</b> - For using the full lwIP API including blocking sockets in OS (<code>NO_SYS=0</code>) mode, along with with multi-core/task/thread safety, and automatic servicing of the <code>cyw43_driver</code> and the lwIP stack.</p>
<p class="startli">This wrapper library:</p><ul>
<li>Sets <code>CYW43_LWIP=1</code> to enable lwIP support in <code>pico_cyw43_arch</code> and <code>cyw43_driver</code>.</li>
<li>Sets <code>PICO_CYW43_ARCH_FREERTOS=1</code> to select the NO_SYS=0 lwip/FreeRTOS integration</li>
<li>Sets <code>LWIP_PROVIDE_ERRNO=1</code> to provide error numbers needed for compilation without an OS</li>
<li>Adds the <code>pico_lwip</code> as a dependency to pull in lwIP.</li>
<li>Adds the lwIP/FreeRTOS code from lwip-contrib (in the contrib directory of lwIP)</li>
</ul>
<p class="startli">Calls into the <code>cyw43_driver</code> high level API (<a class="el" href="cyw43_8h.html" title="CYW43 driver interface.">cyw43.h</a>) may be made from any task or from lwIP callbacks, but not from IRQs. Calls into the lwIP RAW API (which is not thread safe) must be bracketed with <a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">cyw43_arch_lwip_begin</a> and <a class="el" href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4">cyw43_arch_lwip_end</a>. It is fine to bracket calls made from within lwIP callbacks too; you just don't have to.</p>
<dl class="section note"><dt>Note</dt><dd>this wrapper library requires you to link FreeRTOS functionality with your application yourself.</dd></dl>
</li>
<li><p class="startli"><b>pico_cyw43_arch_none</b> - If you do not need the TCP/IP stack but wish to use the on-board LED.</p>
<p class="startli">This wrapper library:</p><ul>
<li>Sets <code>CYW43_LWIP=0</code> to disable lwIP support in <code>pico_cyw43_arch</code> and <code>cyw43_driver</code> </li>
</ul>
</li>
</ul>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga2058ce9bf936fd1402f36e22335a6914" name="ga2058ce9bf936fd1402f36e22335a6914"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2058ce9bf936fd1402f36e22335a6914">&#9670;&nbsp;</a></span>cyw43_arch_lwip_check</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_lwip_check</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">void</td><td>)</td>
          <td>&#160;&#160;&#160;cyw43_thread_lock_check()</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Checks the caller has any locks required for calling into lwIP. </p>
<p >The lwIP API is not thread safe. You should surround calls into the lwIP API with calls to <a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">cyw43_arch_lwip_begin</a> and this method. Note these calls are not necessary (but harmless) when you are calling back into the lwIP API from an lwIP callback.</p>
<p >This method will assert in debug mode, if the above conditions are not met (i.e. it is not safe to call into the lwIP API)</p>
<dl class="section note"><dt>Note</dt><dd>as of SDK release 1.5.0, this is now equivalent to calling <a class="el" href="group__pico__async__context.html#ga032285b9d1a4aa325813cdbcc1f00a75">async_context_lock_check</a> on the <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> associated with cyw43_arch and lwIP.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe" title="Acquire any locks required to call into lwIP.">cyw43_arch_lwip_begin</a> </dd>
<dd>
<a class="el" href="group__pico__cyw43__arch.html#ga263d31bcb5c8d387b37b4f9a578e1c27" title="sad Release any locks required for calling into lwIP">cyw43_arch_lwip_protect</a> </dd>
<dd>
<a class="el" href="group__pico__async__context.html#ga032285b9d1a4aa325813cdbcc1f00a75" title="Assert if the caller does not own the lock for the async_context.">async_context_lock_check</a> </dd>
<dd>
<a class="el" href="group__pico__cyw43__arch.html#ga092b97e879be5b9aa9121abda23e1337" title="Return the current async_context currently in use by the cyw43_arch code.">cyw43_arch_async_context</a> </dd></dl>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga092b97e879be5b9aa9121abda23e1337" name="ga092b97e879be5b9aa9121abda23e1337"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga092b97e879be5b9aa9121abda23e1337">&#9670;&nbsp;</a></span>cyw43_arch_async_context()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structasync__context.html">async_context_t</a> * cyw43_arch_async_context </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the current <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> currently in use by the cyw43_arch code. </p>
<dl class="section return"><dt>Returns</dt><dd>the <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a>. </dd></dl>

</div>
</div>
<a id="gae8557dfd76b719f39cf182a144dd070b" name="gae8557dfd76b719f39cf182a144dd070b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae8557dfd76b719f39cf182a144dd070b">&#9670;&nbsp;</a></span>cyw43_arch_deinit()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_deinit </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>De-initialize the CYW43 architecture. </p>
<p >This method de-initializes the <code>cyw43_driver</code> code and de-initializes the lwIP stack (if it was enabled at build time). Note this method should always be called from the same core (or RTOS task, depending on the environment) as <a class="el" href="group__pico__cyw43__arch.html#ga7a05bd21f02a0effadbba1e8266b8771">cyw43_arch_init</a>.</p>
<p >Additionally if the cyw43_arch is using its own <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> instance, then that instance is de-initialized. </p>

</div>
</div>
<a id="ga88bc0f9768bc9b877adb90b676514dac" name="ga88bc0f9768bc9b877adb90b676514dac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga88bc0f9768bc9b877adb90b676514dac">&#9670;&nbsp;</a></span>cyw43_arch_disable_ap_mode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_disable_ap_mode </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Disables Wi-Fi AP (Access point) mode. </p>
<p >This Disbles the Wi-Fi in <em>Access</em> <em>Point</em> mode. </p>

</div>
</div>
<a id="gab8b4763c68c539c8a8d31400a83fd095" name="gab8b4763c68c539c8a8d31400a83fd095"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab8b4763c68c539c8a8d31400a83fd095">&#9670;&nbsp;</a></span>cyw43_arch_disable_sta_mode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_disable_sta_mode </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Disables Wi-Fi STA (Station) mode. </p>
<p >This disables the Wi-Fi in <em>Station</em> mode, disconnecting any active connection. You should subsequently check the status by calling <a class="el" href="group__cyw43__driver.html#ga71e656d02aabca214ae344f29ae1d033">cyw43_wifi_link_status</a>. </p>

</div>
</div>
<a id="ga1c3d403f299743360ecab36108e4ca7b" name="ga1c3d403f299743360ecab36108e4ca7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1c3d403f299743360ecab36108e4ca7b">&#9670;&nbsp;</a></span>cyw43_arch_enable_ap_mode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_enable_ap_mode </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>ssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>password</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>auth</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enables Wi-Fi AP (Access point) mode. </p>
<p >This enables the Wi-Fi in <em>Access</em> <em>Point</em> mode such that connections can be made to the device by other Wi-Fi clients </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ssid</td><td>the name for the access point </td></tr>
    <tr><td class="paramname">password</td><td>the password to use or NULL for no password. </td></tr>
    <tr><td class="paramname">auth</td><td>the authorization type to use when the password is enabled. Values are <a class="el" href="group__cyw43__ll.html#ga3680993589cb0c98f3ea04f1b63b0158">CYW43_AUTH_WPA_TKIP_PSK</a>, <a class="el" href="group__cyw43__ll.html#ga2268ba0fac688f562463e1a57588a432">CYW43_AUTH_WPA2_AES_PSK</a>, or <a class="el" href="group__cyw43__ll.html#ga7ffceffaf66bb7a121dfdd8ee82c5b48">CYW43_AUTH_WPA2_MIXED_PSK</a> (see <a class="el" href="group__cyw43__ll.html#CYW43_AUTH_">CYW43_AUTH_</a>) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga6796a9ab5ae2cc6c51c14ecdfcda0b96" name="ga6796a9ab5ae2cc6c51c14ecdfcda0b96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6796a9ab5ae2cc6c51c14ecdfcda0b96">&#9670;&nbsp;</a></span>cyw43_arch_enable_sta_mode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_enable_sta_mode </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enables Wi-Fi STA (Station) mode. </p>
<p >This enables the Wi-Fi in <em>Station</em> mode such that connections can be made to other Wi-Fi Access Points </p>

</div>
</div>
<a id="ga5fc198cd8f76428160dfc66f58be29c4" name="ga5fc198cd8f76428160dfc66f58be29c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5fc198cd8f76428160dfc66f58be29c4">&#9670;&nbsp;</a></span>cyw43_arch_get_country_code()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t cyw43_arch_get_country_code </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the country code used to initialize cyw43_arch. </p>
<dl class="section return"><dt>Returns</dt><dd>the country code (see <a class="el" href="group__cyw43__driver.html#CYW43_COUNTRY_">CYW43_COUNTRY_</a>) </dd></dl>

</div>
</div>
<a id="gac494fc808052b0e7411f945f50ebe6d5" name="gac494fc808052b0e7411f945f50ebe6d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac494fc808052b0e7411f945f50ebe6d5">&#9670;&nbsp;</a></span>cyw43_arch_gpio_get()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool cyw43_arch_gpio_get </td>
          <td>(</td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>wl_gpio</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read the value of a GPIO pin on the wireless chip. </p>
<dl class="section note"><dt>Note</dt><dd>this method does not check for errors setting the GPIO. You can use the lower level cyw43_gpio_get instead if you wish to check for errors.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">wl_gpio</td><td>the GPIO number on the wireless chip </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the GPIO is high, false otherwise </dd></dl>

</div>
</div>
<a id="ga33cca1c95fc0d7512e7fef4a59fd7475" name="ga33cca1c95fc0d7512e7fef4a59fd7475"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga33cca1c95fc0d7512e7fef4a59fd7475">&#9670;&nbsp;</a></span>cyw43_arch_gpio_put()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_gpio_put </td>
          <td>(</td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>wl_gpio</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set a GPIO pin on the wireless chip to a given value. </p>
<dl class="section note"><dt>Note</dt><dd>this method does not check for errors setting the GPIO. You can use the lower level cyw43_gpio_set instead if you wish to check for errors.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">wl_gpio</td><td>the GPIO number on the wireless chip </td></tr>
    <tr><td class="paramname">value</td><td>true to set the GPIO, false to clear it. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga7a05bd21f02a0effadbba1e8266b8771" name="ga7a05bd21f02a0effadbba1e8266b8771"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7a05bd21f02a0effadbba1e8266b8771">&#9670;&nbsp;</a></span>cyw43_arch_init()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_init </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the CYW43 architecture. </p>
<p >This method initializes the <code>cyw43_driver</code> code and initializes the lwIP stack (if it was enabled at build time). This method must be called prior to using any other <code>pico_cyw43_arch</code>, <code>cyw43_driver</code> or lwIP functions.</p>
<dl class="section note"><dt>Note</dt><dd>this method initializes wireless with a country code of <code>PICO_CYW43_ARCH_DEFAULT_COUNTRY_CODE</code> which defaults to <code>CYW43_COUNTRY_WORLDWIDE</code>. Worldwide settings may not give the best performance; consider setting PICO_CYW43_ARCH_DEFAULT_COUNTRY_CODE to a different value or calling <a class="el" href="group__pico__cyw43__arch.html#gaf3eb9816b2413128442e4adbfc5114c5">cyw43_arch_init_with_country</a></dd></dl>
<p>By default this method initializes the cyw43_arch code's own <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> by calling <a class="el" href="group__pico__cyw43__arch.html#ga90add164a540ed61daa8aa8df13f36a3">cyw43_arch_init_default_async_context</a>, however the user can specify use of their own <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> by calling <a class="el" href="group__pico__cyw43__arch.html#ga546a36df25d7609b83bf6c4972440181">cyw43_arch_set_async_context()</a> before calling this method</p>
<dl class="section return"><dt>Returns</dt><dd>0 if the initialization is successful, an error code otherwise </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>

</div>
</div>
<a id="ga90add164a540ed61daa8aa8df13f36a3" name="ga90add164a540ed61daa8aa8df13f36a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga90add164a540ed61daa8aa8df13f36a3">&#9670;&nbsp;</a></span>cyw43_arch_init_default_async_context()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structasync__context.html">async_context_t</a> * cyw43_arch_init_default_async_context </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the default <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> for the current cyw43_arch type. </p>
<p >This method initializes and returns a pointer to the static <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> associated with cyw43_arch. This method is called by <a class="el" href="group__pico__cyw43__arch.html#ga7a05bd21f02a0effadbba1e8266b8771">cyw43_arch_init</a> automatically if a different <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> has not been set by <a class="el" href="group__pico__cyw43__arch.html#ga546a36df25d7609b83bf6c4972440181">cyw43_arch_set_async_context</a></p>
<dl class="section return"><dt>Returns</dt><dd>the context or NULL if initialization failed. </dd></dl>

</div>
</div>
<a id="gaf3eb9816b2413128442e4adbfc5114c5" name="gaf3eb9816b2413128442e4adbfc5114c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf3eb9816b2413128442e4adbfc5114c5">&#9670;&nbsp;</a></span>cyw43_arch_init_with_country()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_init_with_country </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>country</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize the CYW43 architecture for use in a specific country. </p>
<p >This method initializes the <code>cyw43_driver</code> code and initializes the lwIP stack (if it was enabled at build time). This method must be called prior to using any other <code>pico_cyw43_arch</code>, <code>cyw43_driver</code> or lwIP functions.</p>
<p >By default this method initializes the cyw43_arch code's own <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> by calling <a class="el" href="group__pico__cyw43__arch.html#ga90add164a540ed61daa8aa8df13f36a3">cyw43_arch_init_default_async_context</a>, however the user can specify use of their own <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> by calling <a class="el" href="group__pico__cyw43__arch.html#ga546a36df25d7609b83bf6c4972440181">cyw43_arch_set_async_context()</a> before calling this method</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">country</td><td>the country code to use (see <a class="el" href="group__cyw43__driver.html#CYW43_COUNTRY_">CYW43_COUNTRY_</a>) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the initialization is successful, an error code otherwise </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>

</div>
</div>
<a id="ga6a1c4a2015fb4c2d47d6d05fc72d4cbe" name="ga6a1c4a2015fb4c2d47d6d05fc72d4cbe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">&#9670;&nbsp;</a></span>cyw43_arch_lwip_begin()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">cyw43_arch_lwip_begin </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Acquire any locks required to call into lwIP. </p>
<p >The lwIP API is not thread safe. You should surround calls into the lwIP API with calls to this method and <a class="el" href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4">cyw43_arch_lwip_end</a>. Note these calls are not necessary (but harmless) when you are calling back into the lwIP API from an lwIP callback. If you are using single-core polling only (pico_cyw43_arch_poll) then these calls are no-ops anyway it is good practice to call them anyway where they are necessary.</p>
<dl class="section note"><dt>Note</dt><dd>as of SDK release 1.5.0, this is now equivalent to calling <a class="el" href="group__pico__async__context.html#ga404d5e6a8ef79159c692dc040f2ded44">async_context_acquire_lock_blocking</a> on the <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> associated with cyw43_arch and lwIP.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4" title="Release any locks required for calling into lwIP.">cyw43_arch_lwip_end</a> </dd>
<dd>
<a class="el" href="group__pico__cyw43__arch.html#ga263d31bcb5c8d387b37b4f9a578e1c27" title="sad Release any locks required for calling into lwIP">cyw43_arch_lwip_protect</a> </dd>
<dd>
<a class="el" href="group__pico__async__context.html#ga404d5e6a8ef79159c692dc040f2ded44" title="Acquire the async_context lock.">async_context_acquire_lock_blocking</a> </dd>
<dd>
<a class="el" href="group__pico__cyw43__arch.html#ga092b97e879be5b9aa9121abda23e1337" title="Return the current async_context currently in use by the cyw43_arch code.">cyw43_arch_async_context</a> </dd></dl>

</div>
</div>
<a id="gae0c3d7dd9f5b41e3cf4c2ae970356df4" name="gae0c3d7dd9f5b41e3cf4c2ae970356df4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae0c3d7dd9f5b41e3cf4c2ae970356df4">&#9670;&nbsp;</a></span>cyw43_arch_lwip_end()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_lwip_end </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Release any locks required for calling into lwIP. </p>
<p >The lwIP API is not thread safe. You should surround calls into the lwIP API with calls to <a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe">cyw43_arch_lwip_begin</a> and this method. Note these calls are not necessary (but harmless) when you are calling back into the lwIP API from an lwIP callback. If you are using single-core polling only (pico_cyw43_arch_poll) then these calls are no-ops anyway it is good practice to call them anyway where they are necessary.</p>
<dl class="section note"><dt>Note</dt><dd>as of SDK release 1.5.0, this is now equivalent to calling <a class="el" href="group__pico__async__context.html#gada9eb6dbc0442ba9cbb44a41526f3b9f">async_context_release_lock</a> on the <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> associated with cyw43_arch and lwIP.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe" title="Acquire any locks required to call into lwIP.">cyw43_arch_lwip_begin</a> </dd>
<dd>
<a class="el" href="group__pico__cyw43__arch.html#ga263d31bcb5c8d387b37b4f9a578e1c27" title="sad Release any locks required for calling into lwIP">cyw43_arch_lwip_protect</a> </dd>
<dd>
<a class="el" href="group__pico__async__context.html#gada9eb6dbc0442ba9cbb44a41526f3b9f" title="Release the async_context lock.">async_context_release_lock</a> </dd>
<dd>
<a class="el" href="group__pico__cyw43__arch.html#ga092b97e879be5b9aa9121abda23e1337" title="Return the current async_context currently in use by the cyw43_arch code.">cyw43_arch_async_context</a> </dd></dl>

</div>
</div>
<a id="ga263d31bcb5c8d387b37b4f9a578e1c27" name="ga263d31bcb5c8d387b37b4f9a578e1c27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga263d31bcb5c8d387b37b4f9a578e1c27">&#9670;&nbsp;</a></span>cyw43_arch_lwip_protect()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_lwip_protect </td>
          <td>(</td>
          <td class="paramtype">int(*)(void *param)&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>param</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>sad Release any locks required for calling into lwIP </p>
<p >The lwIP API is not thread safe. You can use this method to wrap a function with any locking required to call into the lwIP API. If you are using single-core polling only (pico_cyw43_arch_poll) then there are no locks to required, but it is still good practice to use this function.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">func</td><td>the function ta call with any required locks held </td></tr>
    <tr><td class="paramname">param</td><td>parameter to pass to <code>func</code> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the return value from <code>func</code> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__cyw43__arch.html#ga6a1c4a2015fb4c2d47d6d05fc72d4cbe" title="Acquire any locks required to call into lwIP.">cyw43_arch_lwip_begin</a> </dd>
<dd>
<a class="el" href="group__pico__cyw43__arch.html#gae0c3d7dd9f5b41e3cf4c2ae970356df4" title="Release any locks required for calling into lwIP.">cyw43_arch_lwip_end</a> </dd></dl>

</div>
</div>
<a id="gacb76fc7935c64b2a0cb32c0b8af94782" name="gacb76fc7935c64b2a0cb32c0b8af94782"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacb76fc7935c64b2a0cb32c0b8af94782">&#9670;&nbsp;</a></span>cyw43_arch_poll()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_poll </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Perform any processing required by the <code>cyw43_driver</code> or the TCP/IP stack. </p>
<p >This method must be called periodically from the main loop when using a <em>polling</em> style <code>pico_cyw43_arch</code> (e.g. <code>pico_cyw43_arch_lwip_poll</code> ). It may be called in other styles, but it is unnecessary to do so. </p>

</div>
</div>
<a id="ga546a36df25d7609b83bf6c4972440181" name="ga546a36df25d7609b83bf6c4972440181"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga546a36df25d7609b83bf6c4972440181">&#9670;&nbsp;</a></span>cyw43_arch_set_async_context()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_set_async_context </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structasync__context.html">async_context_t</a> *&#160;</td>
          <td class="paramname"><em>context</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> to be used by the cyw43_arch_init. </p>
<dl class="section note"><dt>Note</dt><dd>This method must be called before calling cyw43_arch_init or cyw43_arch_init_with_country if you wish to use a custom <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> instance.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">context</td><td>the <a class="el" href="structasync__context.html" title="Base structure type of all async_contexts. For details about its use, see pico_async_context.">async_context</a> to be used </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gad8d40de29bb275e3b55f4f37ee4d3dc8" name="gad8d40de29bb275e3b55f4f37ee4d3dc8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad8d40de29bb275e3b55f4f37ee4d3dc8">&#9670;&nbsp;</a></span>cyw43_arch_wait_for_work_until()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cyw43_arch_wait_for_work_until </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
          <td class="paramname"><em>until</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sleep until there is cyw43_driver work to be done. </p>
<p >This method may be called by code that is waiting for an event to come from the cyw43_driver, and has no work to do, but would like to sleep without blocking any background work associated with the cyw43_driver.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">until</td><td>the time to wait until if there is no work to do. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga614a37dcffe6363fd6649684cac1c14e" name="ga614a37dcffe6363fd6649684cac1c14e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga614a37dcffe6363fd6649684cac1c14e">&#9670;&nbsp;</a></span>cyw43_arch_wifi_connect_async()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_wifi_connect_async </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>ssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>auth</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Start attempting to connect to a wireless access point. </p>
<p >This method tells the CYW43 driver to start connecting to an access point. You should subsequently check the status by calling <a class="el" href="group__cyw43__driver.html#ga71e656d02aabca214ae344f29ae1d033">cyw43_wifi_link_status</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ssid</td><td>the network name to connect to </td></tr>
    <tr><td class="paramname">pw</td><td>the network password or NULL if there is no password required </td></tr>
    <tr><td class="paramname">auth</td><td>the authorization type to use when the password is enabled. Values are <a class="el" href="group__cyw43__ll.html#ga3680993589cb0c98f3ea04f1b63b0158">CYW43_AUTH_WPA_TKIP_PSK</a>, <a class="el" href="group__cyw43__ll.html#ga2268ba0fac688f562463e1a57588a432">CYW43_AUTH_WPA2_AES_PSK</a>, or <a class="el" href="group__cyw43__ll.html#ga7ffceffaf66bb7a121dfdd8ee82c5b48">CYW43_AUTH_WPA2_MIXED_PSK</a> (see <a class="el" href="group__cyw43__ll.html#CYW43_AUTH_">CYW43_AUTH_</a>)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the scan was started successfully, an error code otherwise </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>

</div>
</div>
<a id="gaa8be8a816a6f40ba30cf69dd112db9d4" name="gaa8be8a816a6f40ba30cf69dd112db9d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa8be8a816a6f40ba30cf69dd112db9d4">&#9670;&nbsp;</a></span>cyw43_arch_wifi_connect_blocking()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_wifi_connect_blocking </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>ssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>auth</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Attempt to connect to a wireless access point, blocking until the network is joined or a failure is detected. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ssid</td><td>the network name to connect to </td></tr>
    <tr><td class="paramname">pw</td><td>the network password or NULL if there is no password required </td></tr>
    <tr><td class="paramname">auth</td><td>the authorization type to use when the password is enabled. Values are <a class="el" href="group__cyw43__ll.html#ga3680993589cb0c98f3ea04f1b63b0158">CYW43_AUTH_WPA_TKIP_PSK</a>, <a class="el" href="group__cyw43__ll.html#ga2268ba0fac688f562463e1a57588a432">CYW43_AUTH_WPA2_AES_PSK</a>, or <a class="el" href="group__cyw43__ll.html#ga7ffceffaf66bb7a121dfdd8ee82c5b48">CYW43_AUTH_WPA2_MIXED_PSK</a> (see <a class="el" href="group__cyw43__ll.html#CYW43_AUTH_">CYW43_AUTH_</a>)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the initialization is successful, an error code otherwise </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>

</div>
</div>
<a id="ga471fd4a7626a27ae7e358a664a48c510" name="ga471fd4a7626a27ae7e358a664a48c510"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga471fd4a7626a27ae7e358a664a48c510">&#9670;&nbsp;</a></span>cyw43_arch_wifi_connect_bssid_async()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_wifi_connect_bssid_async </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>ssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>bssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>auth</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Start attempting to connect to a wireless access point specified by SSID and BSSID. </p>
<p >This method tells the CYW43 driver to start connecting to an access point. You should subsequently check the status by calling <a class="el" href="group__cyw43__driver.html#ga71e656d02aabca214ae344f29ae1d033">cyw43_wifi_link_status</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ssid</td><td>the network name to connect to </td></tr>
    <tr><td class="paramname">bssid</td><td>the network BSSID to connect to or NULL if ignored </td></tr>
    <tr><td class="paramname">pw</td><td>the network password or NULL if there is no password required </td></tr>
    <tr><td class="paramname">auth</td><td>the authorization type to use when the password is enabled. Values are <a class="el" href="group__cyw43__ll.html#ga3680993589cb0c98f3ea04f1b63b0158">CYW43_AUTH_WPA_TKIP_PSK</a>, <a class="el" href="group__cyw43__ll.html#ga2268ba0fac688f562463e1a57588a432">CYW43_AUTH_WPA2_AES_PSK</a>, or <a class="el" href="group__cyw43__ll.html#ga7ffceffaf66bb7a121dfdd8ee82c5b48">CYW43_AUTH_WPA2_MIXED_PSK</a> (see <a class="el" href="group__cyw43__ll.html#CYW43_AUTH_">CYW43_AUTH_</a>)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the scan was started successfully, an error code otherwise </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>

</div>
</div>
<a id="gab2766c44297fb1fb7fe12dc67f044bdb" name="gab2766c44297fb1fb7fe12dc67f044bdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab2766c44297fb1fb7fe12dc67f044bdb">&#9670;&nbsp;</a></span>cyw43_arch_wifi_connect_bssid_blocking()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_wifi_connect_bssid_blocking </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>ssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>bssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>auth</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Attempt to connect to a wireless access point specified by SSID and BSSID, blocking until the network is joined or a failure is detected. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ssid</td><td>the network name to connect to </td></tr>
    <tr><td class="paramname">bssid</td><td>the network BSSID to connect to or NULL if ignored </td></tr>
    <tr><td class="paramname">pw</td><td>the network password or NULL if there is no password required </td></tr>
    <tr><td class="paramname">auth</td><td>the authorization type to use when the password is enabled. Values are <a class="el" href="group__cyw43__ll.html#ga3680993589cb0c98f3ea04f1b63b0158">CYW43_AUTH_WPA_TKIP_PSK</a>, <a class="el" href="group__cyw43__ll.html#ga2268ba0fac688f562463e1a57588a432">CYW43_AUTH_WPA2_AES_PSK</a>, or <a class="el" href="group__cyw43__ll.html#ga7ffceffaf66bb7a121dfdd8ee82c5b48">CYW43_AUTH_WPA2_MIXED_PSK</a> (see <a class="el" href="group__cyw43__ll.html#CYW43_AUTH_">CYW43_AUTH_</a>)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the initialization is successful, an error code otherwise </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>

</div>
</div>
<a id="gac1aa260ffa68c0ee5dcdbbbf9af80286" name="gac1aa260ffa68c0ee5dcdbbbf9af80286"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac1aa260ffa68c0ee5dcdbbbf9af80286">&#9670;&nbsp;</a></span>cyw43_arch_wifi_connect_bssid_timeout_ms()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_wifi_connect_bssid_timeout_ms </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>ssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>bssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>auth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>timeout</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Attempt to connect to a wireless access point specified by SSID and BSSID, blocking until the network is joined, a failure is detected or a timeout occurs. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ssid</td><td>the network name to connect to </td></tr>
    <tr><td class="paramname">bssid</td><td>the network BSSID to connect to or NULL if ignored </td></tr>
    <tr><td class="paramname">pw</td><td>the network password or NULL if there is no password required </td></tr>
    <tr><td class="paramname">auth</td><td>the authorization type to use when the password is enabled. Values are <a class="el" href="group__cyw43__ll.html#ga3680993589cb0c98f3ea04f1b63b0158">CYW43_AUTH_WPA_TKIP_PSK</a>, <a class="el" href="group__cyw43__ll.html#ga2268ba0fac688f562463e1a57588a432">CYW43_AUTH_WPA2_AES_PSK</a>, or <a class="el" href="group__cyw43__ll.html#ga7ffceffaf66bb7a121dfdd8ee82c5b48">CYW43_AUTH_WPA2_MIXED_PSK</a> (see <a class="el" href="group__cyw43__ll.html#CYW43_AUTH_">CYW43_AUTH_</a>) </td></tr>
    <tr><td class="paramname">timeout</td><td>how long to wait in milliseconds for a connection to succeed before giving up</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the initialization is successful, an error code otherwise </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>

</div>
</div>
<a id="gae1237b71f7793ba603a4b39da37c7a71" name="gae1237b71f7793ba603a4b39da37c7a71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae1237b71f7793ba603a4b39da37c7a71">&#9670;&nbsp;</a></span>cyw43_arch_wifi_connect_timeout_ms()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cyw43_arch_wifi_connect_timeout_ms </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>ssid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>auth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>timeout</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Attempt to connect to a wireless access point, blocking until the network is joined, a failure is detected or a timeout occurs. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ssid</td><td>the network name to connect to </td></tr>
    <tr><td class="paramname">pw</td><td>the network password or NULL if there is no password required </td></tr>
    <tr><td class="paramname">auth</td><td>the authorization type to use when the password is enabled. Values are <a class="el" href="group__cyw43__ll.html#ga3680993589cb0c98f3ea04f1b63b0158">CYW43_AUTH_WPA_TKIP_PSK</a>, <a class="el" href="group__cyw43__ll.html#ga2268ba0fac688f562463e1a57588a432">CYW43_AUTH_WPA2_AES_PSK</a>, or <a class="el" href="group__cyw43__ll.html#ga7ffceffaf66bb7a121dfdd8ee82c5b48">CYW43_AUTH_WPA2_MIXED_PSK</a> (see <a class="el" href="group__cyw43__ll.html#CYW43_AUTH_">CYW43_AUTH_</a>) </td></tr>
    <tr><td class="paramname">timeout</td><td>how long to wait in milliseconds for a connection to succeed before giving up</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the initialization is successful, an error code otherwise </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->

	<script src="main.js"></script>
</body>
</html>